#pragma once

#include "defines.h"
#include "platform/window.h"
#include "platform/vk/vk_device_context.h"
#include "platform/vk/vk_graphics_pipeline.h"
#include "platform/vk/vk_swapchain.h"
#include "core/camera.h"

#include "renderer/render_system.h"

namespace vkrender
{
    class Game
    {
    private:
        std::shared_ptr<VulkanWindow> window;
        std::shared_ptr<VulkanDeviceContext> context;
        std::shared_ptr<VulkanSwapChain> swapchain;
        std::shared_ptr<RenderSystem> render_base;
    public:
        Game();
        ~Game();

        void run();
        void draw();
    private:
        void recreateSwapchain();
    };
}
